/**
 * Werwolftool-Spielleiterfunktionen
 * @author JANNiS <jannis@huffle-home.de>
 */

/**
 * Hintergrundklasse für die Auswertung
 * Zuständig, um zu berechnen, wer die meisten Stimmen hat und wer noch nicht gestimmt hat
 */
var Auswertung = new Class({
	/**
	 * Eine Liste aller Spieler, die mindestens eine Stimme bekommen haben, sortiert nach Anzahl Stimmen absteigend
	 */
	opferliste: [],
	/**
	 * Die Spieler, die die meisten Stimmen haben. Falls es mehrere sind, ist es ein Unentschieden
	 */
	meisteStimmen: [],
	/**
	 * Liste aller Spielernamen, die nicht gestimmmt haben
	 */
	nichtGestimmt: [],
	
	/**
	 * Aktualisiert die Auswertung
	 */
	aktualisieren: function() {
		// Zweidimensionales Array für die Spieler, sortiert nach Stimmen. Dimension 1: Anzahl Stimmen, Dimension 2: Spieler
		var stimmen = [];
		// Bisherige Listen löschen (werden neu berechnet)
		this.opferliste.empty();
		this.meisteStimmen.empty();
		this.nichtGestimmt.empty();
		
		// Jeden Spieler durchgehen ...
		spiel.spieler.each(function(spieler) {
			
			// Falls der Spieler noch nicht gestimmt hat ...
			if(spieler.get("stimme") == null) {
				// Spielernamen zur Liste der Nicht-Gestimmten-Spieler hinzufügen
				this.nichtGestimmt.push(spieler.name);
			}
			
			// Anzahl Stimmen merken
			var anzahlStimmen = spieler.get("stimmen").length;
			// Falls der Spieler eine Stimme hat ...
			if(anzahlStimmen > 0) {
				// Falls noch kein Array mit dieser Stimmenzahl existiert ...
				if(stimmen[anzahlStimmen] == null) {
					// Array für diese Stimmenzahl erstellen
					stimmen[anzahlStimmen] = [];
				}
				// Spieler zum Array mit der entsprechenden Stimmenzahl hinzufügen
				stimmen[anzahlStimmen].push(spieler);
			}
		}, this);
		
		// Falls überhaupt jemand gestimmt hat...
		if(stimmen.length > 0) {
			// Stimmen umdrehen, sodass die Spieler mit den meisten Stimmen vorne sind
			stimmen.reverse();
			// Spieler mit den meisten Stimmen in das entsprechende Array kopieren
			this.meisteStimmen = $A(stimmen[0]);
			// Spieler in die "Opferliste" kopieren
			this.opferliste = stimmen.flatten();
		}
	}
});